<?php

class Pedido_Subsidios extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->datosusuario = $this->authentication->getDataLogged();
        $this->datoscausa = $this->session->userdata('causa');
        $this->load->model('m_pedido_subsidio', 'pedido_subsidio');
        $this->load->model('m_demandado_x_pedido_subsidio', 'demandado_x_pedido_subsidio');
        $this->load->model('m_demandado', 'demandado');
        $this->load->model('m_medico', 'medico');
        $this->load->model('m_documento', 'documento');
        $this->load->model('m_documento_x_pedido_subsidio', 'documento_x_pedido_subsidio');

        $causa = $this->session->userdata('causa');
        $this->authentication->puedeVerCausa($causa['id']);
    }

    /**
     * Listado de pedido de subsidios.
     *
     * @return void
     */
    function index() {
        $pedido_subsidios = $this->pedido_subsidio->getLista($this->datoscausa['id']);
        $estado_pedido_subsidio = getListEstadoPedidoSubsidio();

        $data = array(
            'titulo' => 'Listado de Pedido de Subsidios',
            'datosusuario' => $this->datosusuario,
            'datoscausa' => $this->datoscausa,
            'pedido_subsidios' => $pedido_subsidios,
            'estado_pedido_subsidio' => $estado_pedido_subsidio,
            'seleccionar' => 'causas',
        );

        $this->load->view('templates/header', $data);
        $this->load->view('templates/topbar');
        $this->load->view('causas/leftbarcausa');
        $this->load->view('pedido_subsidios/index');
        $this->load->view('templates/footer');
    }

    /**
     * Crea un pedido de subsidio.
     * 
     * @return void
     */
    function nuevo() {

        $demandados = $this->demandado->getListPorCausaId($this->datoscausa['id']);
        $demandadosSeleccionados = (isset($_POST['demandado'])) ? $_POST['demandado'] : '';

        $this->form_validation->set_rules($this->pedido_subsidio->getValidacion($demandados, $demandadosSeleccionados));
        if ($this->form_validation->run() === FALSE) {
            $documentos = array();

            if (isset($_POST['submit'])) {
                set_message(array('3' => validation_errors()));
                $pedido_subsidio = $_POST;

                if (isset($_POST['documento'])) {
                    foreach ($_POST['documento'] as $id) {
                        $this->documento->get($id);
                        $documentos[$id]->id = $this->documento->id;
                        $documentos[$id]->nombre = $this->documento->nombre;
                        $documentos[$id]->descripcion = $this->documento->descripcion;
                    }
                }
            } else {

                foreach ($demandados as $demandado) {
                    $importe[$demandado->id] = '';
                    $motivo[$demandado->id] = '';
                }

                $pedido_subsidio = array(
                    'descripcion' => '',
                    'importe' => $importe,
                    'motivo' => $motivo,
                );
            }

            $demandados = $this->demandado->getListPorCausaId($this->datoscausa['id']);

            $data = array(
                'titulo' => 'Nuevo Pedido de Subsidio',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'pedido_subsidio' => $pedido_subsidio,
                'demandados' => $demandados,
                'documentos' => $documentos,
                'pathdocumento' => PATH_UPLOAD . $this->datoscausa['id'] . '/',
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('pedido_subsidios/form');
            $this->load->view('templates/footer');
        } else {
            $_POST['fecha'] = normal_to_database_date(gmdate('d/m/Y'));

            $this->pedido_subsidio->setAttributes($this->input);
            $this->pedido_subsidio->usuarioId = $this->datosusuario['id'];
            $this->pedido_subsidio->id = null;
            $this->pedido_subsidio->save();

            foreach ($_POST['demandado'] as $demandadoId) {
                $importe = $this->input->post('importe');
                $motivo = $this->input->post('motivo');
                $this->demandado_x_pedido_subsidio->id = null;
                $this->demandado_x_pedido_subsidio->pedidoSubsidioId = $this->pedido_subsidio->id;
                $this->demandado_x_pedido_subsidio->demandadoId = $demandadoId;
                $this->demandado_x_pedido_subsidio->importe = $importe[$demandadoId];
                $this->demandado_x_pedido_subsidio->motivo = $motivo[$demandadoId];
                $this->demandado_x_pedido_subsidio->estado = 0;
                $this->demandado_x_pedido_subsidio->respuesta = '';
                $this->demandado_x_pedido_subsidio->save();
            }

            if (isset($_POST['documento'])) {
                foreach ($_POST['documento'] as $id) {
                    $this->documento_x_pedido_subsidio->documentoId = $id;
                    $this->documento_x_pedido_subsidio->pedidoSubsidioId = $this->pedido_subsidio->id;
                    $this->documento_x_pedido_subsidio->id = null;
                    $this->documento_x_pedido_subsidio->save();
                }
            }

            set_message(array('1' => 'Se ha realizado un nuevo pedido de subsidio.'));

            redirect('causas/pedido_subsidios/');
        }
    }

    /**
     * Elimina un pedido de subsidio.
     *
     * @param integer $id El ID del pedido de subsidio a eliminar.
     * @return void
     */
    function ver($id = '') {

        if ($this->demandado_x_pedido_subsidio->get((int) $id)) {
            $this->demandado->get($this->demandado_x_pedido_subsidio->demandadoId);
            $this->medico->get($this->demandado->matricula);
            $estado_pedido_subsidio = getListEstadoPedidoSubsidio();

            $data = array(
                'titulo' => 'Ver Respuesta del Pedido de Subsidio',
                'datosusuario' => $this->datosusuario,
                'datoscausa' => $this->datoscausa,
                'demandado' => $this->demandado,
                'medico' => $this->medico,
                'demandado_x_pedido_subsidio' => $this->demandado_x_pedido_subsidio,
                'estado_pedido_subsidio' => $estado_pedido_subsidio,
                'seleccionar' => 'causas',
            );

            $this->load->view('templates/header', $data);
            $this->load->view('templates/topbar');
            $this->load->view('causas/leftbarcausa');
            $this->load->view('pedido_subsidios/ver');
            $this->load->view('templates/footer');
        } else {
            redirect('causas/pedido_subsidios/');
        }
    }

    /**
     * Elimina un pedido de subsidio.
     *
     * @param integer $id El ID del pedido de subsidio a eliminar.
     * @return void
     */
    function cancelar($id = '') {

        if ($this->demandado_x_pedido_subsidio->get((int) $id)) {

            if ($this->demandado_x_pedido_subsidio->estado == 0) {
                $this->demandado_x_pedido_subsidio->estado = 3;
                $this->demandado_x_pedido_subsidio->save();
            }

            set_message(array('1' => 'Se ha anulado el pedido de subsidio.'));
        }

        redirect('causas/pedido_subsidios/');
    }

}

